package kr.co.bettersoft.carrotmemberstore.activity;
/**
 * MainActivitySettings
 * 메인-설정 탭 액티비티.
 *
 * 웹뷰에 설정 URL 을 호출하여 보여줌. 우편번호 처리는 웹에서 처리.
 *  설정 저장이후 알림창 뜨고 바뀐 내용으로 화면 갱신까지 웹에서 처리.
 */
import java.util.List;

import kr.co.bettersoft.carrotmemberstore.R;
import kr.co.bettersoft.carrotmemberstore.adapter.PostAddressListAdapter;
import kr.co.bettersoft.carrotmemberstore.common.CarrotMemberStoreRest;
import kr.co.bettersoft.carrotmemberstore.common.CommonConstant;
import kr.co.bettersoft.carrotmemberstore.domain.PostAddress;

import org.apache.http.util.EncodingUtils;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivitySettings extends Activity {

	String TAG = "MainActivitySettings";
	final int REQUEST_ADDRESS = 401;	// @@@ 
	
	// 전달받은 가맹점 정보
	String merchantId;
	String countryCode;
	String languageCode;
	
	CarrotMemberStoreRest carrotMemberStoreRest;
	String callResult = "";
	String tempstr = "";
	JSONObject jsonObject;

	String postData = "";

	// 화면 구성
	WebView settingsWebViewLeft;
	ListView listView;								// 산출물 보여줄 뷰
	View emptyView;				// 데이터 없음 뷰
	// 진행바
	ProgressBar pb1, pb2;		// 중단 로딩 진행바
	// 키보드 자동 숨기기 위한 부모 레이아웃(리스너 달아서 키보드 숨김)과 입력 매니저    // 우측은 보이기, 숨기기 용도.
	View parentLayout, settings_right_layout;
	InputMethodManager imm;
	
	String loadingURLLeft = (CommonConstant.domain).concat("/mMerchantUpdate.do"); 		
	String zipCodeURL = CommonConstant.zipCodeURL; 			// 공용	 (commons 에서 분리 처리함)
	
	Boolean nowLoading1 = false;
	Boolean nowLoading2 = false;
	Boolean webPageLoaded1 = false;
	
	// 우측 우편번호 통신용
	PostAddressListAdapter addressAdapter;
	Button searchBtn;	
	TextView searchWordView;
	String searchWord;
	String searchResult;

	List<PostAddress> entriesFn;			// 최종 산출물
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
	
	// 핸들러
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			try{
				Bundle b = msg.getData();		
				if(b.getInt("showYN")==1){		// 받아온 마일리지 결과를 화면에 뿌려준다.
					searchWordView.setEnabled(true);
					// 최종 결과 배열은 entriesFn 에 저장되어 있다.. 여기 리스트 레이아웃.
					searchWordView.setText("");
					if((entriesFn!=null)&&(entriesFn.size()>0)){
						setListing();
						listView.setVisibility(View.VISIBLE);			//   0 visible   4 invisible   8 gone
						emptyView.setVisibility(View.GONE);
						//						listView.setEnabled(true);			// 그리드 뷰 허용함.
					}else{
						emptyView = findViewById(R.id.settings_empty1);		// 데이터 없으면 '빈 페이지'(데이터 없음 메시지)표시		// ...
						listView.setEmptyView(emptyView);
						listView.setVisibility(View.GONE);			//   0 visible   4 invisible   8 gone
						emptyView.setVisibility(View.VISIBLE);
					}
					hidePb2();
				}else if(b.getInt("showYN")==2){
					addressAdapter.notifyDataSetChanged();
					searchWordView.setEnabled(true);
				}
				if(b.getInt("showRightView")==1){		// 우측 창 보임.
					settings_right_layout.setVisibility(View.VISIBLE);
				}else if(b.getInt("showRightView")==2){								// 우측 창 안 보임.
					settings_right_layout.setVisibility(View.INVISIBLE);
				}
				if(b.getInt("order")==1){
					// 프로그래스바 실행
					if(pb1==null){
						pb1=(ProgressBar) findViewById(R.id.main_activity_settings_progressbar1);
					}
					pb1.setVisibility(View.VISIBLE);
				}else if(b.getInt("order")==2){
					// 프로그래스바  종료
					if(pb1==null){
						pb1=(ProgressBar) findViewById(R.id.main_activity_settings_progressbar1);
					}
					pb1.setVisibility(View.INVISIBLE);
				}
				if(b.getInt("order")==3){
					// 프로그래스바 실행
					if(pb2==null){
						pb2=(ProgressBar) findViewById(R.id.main_activity_settings_progressbar2);
					}
					pb2.setVisibility(View.VISIBLE);
				}else if(b.getInt("order")==4){
					// 프로그래스바  종료
					if(pb2==null){
						pb2=(ProgressBar) findViewById(R.id.main_activity_settings_progressbar2);
					}
					pb2.setVisibility(View.INVISIBLE);
				}
				if(b.getInt("showConfirm")==2){						// 확인창. 변경 결과
					new AlertDialog.Builder(returnThis())
					.setMessage(b.getString("msg"))
					.setCancelable(true)
					.setPositiveButton("OK", new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialog, int id) {
							// 웹뷰는 비동기로 하지 않고 바로 한다
							postData = "nextTarget=mMerchantUpdate"+"&Merchant-Language="+languageCode+"&Merchant-Country="+countryCode+"&Merchant-Id="+merchantId;				// 파라미터 : Merchant-Language / Merchant-Country
							settingsWebViewLeft.postUrl(loadingURLLeft, EncodingUtils.getBytes(postData, "BASE64"));
						}
					})
					.setNegativeButton("", null).show();
				}
				if(b.getInt("showAlert")==1){					 // 경고창 . 
					//
					new AlertDialog.Builder(returnThis())							
					.setTitle(CommonConstant.alertTitle)						 
					.setMessage(b.getString("msg"))
					.setIcon(R.drawable.ic_dialog_img)		 
					.setPositiveButton("OK", new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialog, int whichButton) {
							//
						}})
						.setNegativeButton("", null).show();
				}
				if(b.getInt("showErrToast")==1){			// // 페이지를 불러오는데 실패했습니다.\n잠시후 다시 시도해주시기 바랍니다.
					Toast.makeText(MainActivitySettings.this, getString(R.string.failed_to_open_page), Toast.LENGTH_SHORT).show();
				}
				
				switch (msg.what)
				{
				case REQUEST_ADDRESS : runOnUiThread(new RunnableRequest());		// @@@ 
				break;
				default : 
					break;
				}	
				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};
	

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	@Override
	public void onCreate(Bundle savedInstanceState) {
		Log.w(TAG,"onCreate");
		super.onCreate(savedInstanceState);

		requestWindowFeature(Window.FEATURE_NO_TITLE );	// 타이틀바 제거
		setContentView(R.layout.main_activity_settings);
		
		carrotMemberStoreRest = new CarrotMemberStoreRest(); 
		
		settingsWebViewLeft = (WebView) findViewById(R.id.settings_webview_left);
		searchWordView = (TextView) findViewById(R.id.settings_text_search_address);
		listView  = (ListView)findViewById(R.id.settings_listview);
		emptyView  = (View)findViewById(R.id.settings_empty1);


		settingsWebViewLeft.setWebViewClient(new MyWebViewClientLeft());
		settingsWebViewLeft.setWebChromeClient(new MyWebChromeClientLeft());  // MyWebChromeClient 지정         -- javascript 사용 됨. 
		settingsWebViewLeft.addJavascriptInterface(new AndroidBridgeLeft(), "hybrid");
		WebSettings webSet1 = settingsWebViewLeft.getSettings();
		webSet1.setJavaScriptEnabled(true);	// JavaScript 허용.

		searchBtn = (Button) findViewById(R.id.settings_btn_search_address);		
		// 버튼  리스너.
		searchBtn.setOnClickListener(new OnClickListener() {		// 우측 검색 버튼.
			@Override
			public void onClick(View v) {
				Log.w(TAG,"searchBtn click");
				//				if(!loading){
				//					loading = true;
				searchWord = searchWordView.getText()+"";
				if(searchWord.length()>0){
					showPb2();
					searchWordView.setEnabled(false);
//					new backgroundRequest().execute();
					handler.sendEmptyMessage(REQUEST_ADDRESS);
				}else{
					showResultDialog(getString(R.string.post_address_no_input_msg));
				}
			}
		});

		parentLayout = 	 findViewById(R.id.settings_parent_layout);	
		settings_right_layout  = findViewById(R.id.settings_right_layout);			// 우측 화면 보임, 숨김 용도
		parentLayout.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
				imm .hideSoftInputFromWindow(searchWordView.getWindowToken(), 0);
			}
		});
		settings_right_layout.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
				imm .hideSoftInputFromWindow(searchWordView.getWindowToken(), 0);
			}
		});
	}
	
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	// 데이터를 화면에 세팅
	/**
	 * setListing
	 *  데이터를 화면에 세팅한다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	public void setListing(){
		Log.d(TAG,"setListing/"+entriesFn.size());
		addressAdapter = new PostAddressListAdapter(this, entriesFn);
		listView  = (ListView)findViewById(R.id.settings_listview);
		listView.setDivider(null);			// 라인 제거
		listView.setAdapter(addressAdapter);

		// 클릭시 왼쪽으로 데이터 전달.
		listView.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {
				String zCode;			//Log.d(TAG,ZIPCODE+" "+SIDO+" "+GUGUN+" "+DONG+" "+BUNJI);
				String address;
				zCode = entriesFn.get(position).getZipcode();
				address = entriesFn.get(position).getSido()+" "+entriesFn.get(position).getGugun()+" "+entriesFn.get(position).getDong()+" "+entriesFn.get(position).getBunji();
				settingsWebViewLeft.loadUrl("javascript:jsUpdateZipcode('" + zCode + "', '"+ address +"');");
				hideRightView();
				showResultDialog(getString(R.string.post_address_searched));
			}
		});
	}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
	// 비동기 실행
	
	/**
	 * 러너블. 고객 마일리지 리스트를 가져온다.
	 */
	class RunnableRequest implements Runnable {
		public void run(){
			new backgroundRequest().execute();
		}
	}
	/**
	 * backgroundRequest
	 * 비동기로 우편번호 정보 요청한다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	public class backgroundRequest extends  AsyncTask<Void, Void, Void> { 
		@Override protected void onPostExecute(Void result) {  
		} 
		@Override protected void onPreExecute() {  
		} 
		@Override protected Void doInBackground(Void... params) { 
			
			// 파리미터 세팅
			// 호출
			showPb2();
			callResult = carrotMemberStoreRest.RestRequestAddress(zipCodeURL, searchWord);
			hidePb2();
			// 결과 처리
			if(callResult.equals("S")){
				entriesFn = carrotMemberStoreRest.getPostAddressEntriesFn();
			}
			showInfo();
			
			return null; 
		}
	}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 웹뷰
	
	/**
	 * MyWebViewClientLeft
	 * 페이지 로드, 완료 이벤트발생 가능한 웹뷰 클라이언트
	 *
	 */
	private class MyWebViewClientLeft extends WebViewClient {
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			view.loadUrl(url);
			return true;
		}
		/**
		 * onPageFinished
		 * 로딩 끝나면 프로그래스바 숨기고 재로딩 가능하도록한다
		 *
		 * @param view
		 * @param url
		 * @return
		 */
		@Override
		public void onPageFinished(WebView view, String url) {		// 페이지 로딩 완료.
			super.onPageFinished(view, url);
			hidePb1();
			webPageLoaded1 = true;
			nowLoading1 = false;
		}
		/**
		 * onPageStarted
		 * 웹뷰 로딩 시작하면 시간 재서 로딩 안되면 멈추고 알린다.
		 *
		 * @param view
		 * @param url
		 * @param favicon
		 * @return
		 */
		@Override
		public void onPageStarted(WebView view, String url, Bitmap favicon) {		// 페이지 로드 시작
			super.onPageStarted(view, url, favicon);
			showPb1();		
			new Thread(new Runnable() {
				@Override
				public void run() {
					//					sleepCounter = sleepCounter +1;
					try {
						Thread.sleep(CommonConstant.webPageLoadingMaxTime);					// 최대 로딩 시간. 
					} catch (InterruptedException e) {
						e.printStackTrace();
					}finally{
						runOnUiThread(new Runnable(){
							public void run(){
								if(settingsWebViewLeft.getProgress()<100 && !webPageLoaded1) {
									// do what you want
									settingsWebViewLeft.stopLoading();
									hidePb1();
									if(nowLoading1){
										showErrMsg();
									}
									webPageLoaded1 = false;
								}
							}
						});
						nowLoading1 = false;
					}
				}
			}).start();
		}
	}
	/**
	 * MyWebChromeClient
	 *  자바스크립트 alert 사용 위한 크롬 클라이언트이다
	 *
	 */
	private class MyWebChromeClientLeft extends WebChromeClient {
		//Javascript alert 실행 가능함
		@Override
		public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
			final JsResult finalRes = result;
			//AlertDialog 생성
			new AlertDialog.Builder(view.getContext())
			.setMessage(message)
			.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					finalRes.confirm(); 
				}
			})
			.setCancelable(false)
			.create()
			.show();
			return true;
		}
	}
	
	
	
	/**
	 * Bridge Class
	 * 웹페이지로부터 요청을 받아서 처리한다.
	 */
	private class AndroidBridgeLeft {
		// 주소찾기를 누르면 우측에 우편번호 검색 창을..
		/**
		 * callRightPage
		 * 주소찾기를 누르면 우측에 우편번호 검색 창을보여준다
		 *
		 * @param 
		 * @param 
		 * @return 
		 */
		public void callRightPage(){
			if(entriesFn!=null){
				entriesFn.clear();		// 기존 데이터 초기화.
				updateInfo();
			}
			showRightView();
		}
		// 결과창		-- alert 띄우고 확인시 페이지 리프레시.
		/**
		 * leftPageResult
		 *  결과창 - alert 띄우고 확인시 페이지 리프레시한다
		 *
		 * @param msg
		 * @param 
		 * @return 
		 */
		public void leftPageResult(String msg){
			showConfirmDialog(2, msg);
		}
	}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	/**
	 * returnThis
	 *  컨택스트를 리턴한다
	 *
	 * @param
	 * @param
	 * @return context
	 */

	public Context returnThis(){
		return this;
	}

	
	/**
	 * showConfirmDialog
	 *  확인을 받는 컨펌 창을 띄운다
	 *
	 * @param showConfirmCode
	 * @param msg
	 * @return 
	 */
	public void showConfirmDialog(final int showConfirmCode, final String msg){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showConfirm", showConfirmCode);		// 2는 적립, 3은 소비
						b.putString("msg", msg);			// 화면에 보여줄 메시지
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}

	
	/**
	 * showInfo
	 * 받아온 정보를 화면에 보여준다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	public void showInfo(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();
						Bundle b = new Bundle();
						b.putInt("showYN", 1);		// 보여주기.
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * updateInfo
	 * 화면 정보를 초기화한다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	public void updateInfo(){			// 초기화.
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();
						Bundle b = new Bundle();
						b.putInt("showYN", 2);		// 초기화.
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}

	// 우측 창 보임. 숨김
	/**
	 * showRightView
	 *  우측 창 가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void showRightView(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showRightView" , 1);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hideRightView
	 *  우측 창 비가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void hideRightView(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showRightView" , 2);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	
	// 중앙 프로그래스바 보임, 숨김
	/**
	 * showPb1
	 *  중앙 프로그래스바 가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void showPb1(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "order" , 1);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hidePb1
	 *  중앙 프로그래스바 비가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void hidePb1(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "order" , 2);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * showPb2
	 *  중앙 프로그래스바 가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void showPb2(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "order" , 3);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hidePb2
	 *  중앙 프로그래스바 비가시화한다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void hidePb2(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "order" , 4);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * showErrMsg
	 * 화면에 error 토스트  띄운다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void showErrMsg(){			// 화면에 error 토스트 띄움..
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showErrToast", 1);
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	} 

	//얼럿을 띄운다.  하단 버튼은 "OK" 로 통일.
	/**
	 * showResultDialog
	 * 얼럿을 띄운다
	 *
	 * @param msg
	 * @param
	 * @return
	 */
	public void showResultDialog(final String msg){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showAlert", 1);
						b.putString("msg", msg);			// 화면에 보여줄 메시지
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}

	/**
	 * onResume
	 * 액티비티 리쥼시마다 웹페이지 로드한다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	@Override
	public void onResume(){
		super.onResume();
		merchantId = MainTabsPage.merchantId;
		countryCode = MainTabsPage.countryCode;
		languageCode = MainTabsPage.languageCode;
			if(!webPageLoaded1 && !nowLoading1){
				nowLoading1 = true;
//				loggingToServer();		// *** 보류
				// *** 서버로깅 사용안해서 작성한 코드. 서버로깅시 주석처리할것.
				postData = "Merchant-Language="+languageCode+"&Merchant-Country="+countryCode+"&Merchant-Id="+merchantId;				// 파라미터 : Merchant-Language / Merchant-Country
				settingsWebViewLeft.postUrl(loadingURLLeft, EncodingUtils.getBytes(postData, "BASE64"));
				settingsWebViewLeft.getSettings().setJavaScriptEnabled(true);
			}
	}

	// 종료 확인
	/**
	 * onBackPressed
	 * 종료 확인한다
	 *
	 * @param 
	 * @param
	 * @return 
	 */
	@Override
	public void onBackPressed() {
		new AlertDialog.Builder(this)
		.setMessage(getString(R.string.confirm_logout))				//  로그아웃 하시겠습니까?  Are you sure you want to Logout?
		.setCancelable(false)
		.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {		// Yes
			public void onClick(DialogInterface dialog, int id) {
				finish();
				//				MainActivitySettings.this.finish();
			}
		})
		.setNegativeButton(getString(R.string.no), null)			// No
		.show();
	}
	/**
	 * onPause
	 * 액티비티 pause 에 웹뷰 재로드 가능하도록 해준다
	 *
	 * @param 
	 * @param
	 * @return 
	 */
	@Override
	public void onPause(){
		webPageLoaded1 = false;
		super.onPause();
	}

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	// 서버에 로깅하기.
//	/**
//	 * 서버에 위치 및 로그 남김
//	 * loggingToServer
//	 */
//	public void loggingToServer(){
//		new backgroundUpdateLogToServer().execute();	// 비동기로 전환	
//	}
//	/**
//	 * 비동기로 사용자의 위치 정보 및 정보 로깅
//	 * backgroundUpdateLogToServer
//	 */
//	public class backgroundUpdateLogToServer extends  AsyncTask<Void, Void, Void> { 
//		@Override protected void onPostExecute(Void result) {  
//		} 
//		@Override protected void onPreExecute() {  
//		} 
//		@Override protected Void doInBackground(Void... params) {  
//			Log.d(TAG,"backgroundUpdateMyLocationtoServer");
//			updateLogToServer();
//			return null; 
//		}
//	}
//	/**
//	 * 사용자 위치 정보 및 정보 로깅
//	 * 
//	 */
//	public void updateLogToServer(){
//		if(isUpdating==0){
//			isUpdating = 1;
//			Log.i(TAG, "updateLocationToServer");
//			controllerName = "checkMileageLogController";
//			methodName = "registerLog";
//
//			new Thread(
//					new Runnable(){
//						public void run(){
//							JSONObject obj = new JSONObject();
//							try{
//								// 자신의 아이디를 넣어서 조회
//								Date today = new Date();
//								SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//								String nowDate = sf.format(today);
//								obj.put("checkMileageId", "");	// checkMileageId 	사용자 아이디
//								obj.put("merchantId", merchantId);		// merchantId		가맹점 아이디.
//								// CheckMileageMerchantAmassView CheckMileageMerchantCheckView // 적립, 차감
//								// CheckMileageMerchantAnnouncementView // CheckMileageMerchantMileageCustomerListView // 공지, 목록
//								// CheckMileageMerchantPreferenceView	// 설정
//								obj.put("viewName", "CheckMileageMerchantPreferenceView");		// viewName			출력된 화면.
//								obj.put("parameter01", "");		// parameter01		사용자 전화번호.
//								obj.put("parameter02", "");		// parameter02		위도.
//								obj.put("parameter03", "");		// parameter03		경도.
//								obj.put("parameter04", "");		// parameter04		검색일 경우 검색어.
//								obj.put("parameter05", "");		// parameter05		예비용도.
//								obj.put("parameter06", "");		// parameter06		예비용도.
//								obj.put("parameter07", "");		// parameter07		예비용도.
//								obj.put("parameter08", "");		// parameter08		예비용도.
//								obj.put("parameter09", "");		// parameter09		예비용도.
//								obj.put("parameter10", "");		// parameter10		예비용도.
//								obj.put("registerDate", nowDate);		// registerDate		등록 일자.
//							}catch(Exception e){
//								e.printStackTrace();
//							}
//							String jsonString = "{\"checkMileageLog\":" + obj.toString() + "}";
//							try{
//								postUrl2 = new URL(serverName+"/"+controllerName+"/"+methodName);
//								connection2 = (HttpURLConnection) postUrl2.openConnection();
//								connection2.setConnectTimeout(CommonConstant.serverConnectTimeOut);
//								connection2.setDoOutput(true);
//								connection2.setInstanceFollowRedirects(false);
//								connection2.setRequestMethod("POST");
//								connection2.setRequestProperty("Content-Type", "application/json");
//								//								connection2.connect();
//								Thread.sleep(200);
//								OutputStream os2 = connection2.getOutputStream();
//								os2.write(jsonString.getBytes("UTF-8"));
//								os2.flush();
//								Thread.sleep(200);
//								responseCode = connection2.getResponseCode();
//								// 조회한 결과를 처리.
//								if(responseCode==200 || responseCode==204){
//									Log.d(TAG,"updateLogToServer S");
//								}else{
//									Log.d(TAG,"updateLogToServer F / "+responseCode);
//								}
//							}catch(Exception e){ 
//								Log.d(TAG,"updateLocationToServer->fail");
//							}finally{
//								isUpdating = 0;
//
//								postData = "Merchant-Language="+languageCode+"&Merchant-Country="+countryCode+"&Merchant-Id="+merchantId;				// 파라미터 : Merchant-Language / Merchant-Country
//								settingsWebViewLeft.postUrl(loadingURLLeft, EncodingUtils.getBytes(postData, "BASE64"));
//								settingsWebViewLeft.getSettings().setJavaScriptEnabled(true);
//							}
//						}
//					}
//			).start();
//		}else{
//			Log.w(TAG,"already updating..");
//		}
//	}
}
